About Me

About son-video.com



- En quelques chiffres
- ➥ créé en 2002
- ➥ env. 70 personnes
- ➥ >30k références
- ➥ >25 M€ CA principalement via le site
- ➥ 8 magasins en France
15 ans de LAMP
- Signaux d’alarmes tardifs
- ➥ Problèmes de performances.
- ➥ Résistance aux changements.
- ➥ Dégradation des relations IT.
15 ans de LAMP
- Anatomie d’une application “Legacy”
- ➥ Plusieurs strates de code.
- ➥ Pas de couverture de tests.
- ➥ Monolith fonctionnel.
15 ans de LAMP
- Anatomie d’une base de données “Legacy”
- ➥ Structure « incrémentale ».
- ➥ Couche modèle sous forme de procédures.
- ➥ Beaucoup d’actions métier via Triggers.
Monolithe structurel
- On partage les problèmes
- Problèmes de charge.
- Problèmes de bugs.
- Problèmes de cohérence.
Inside the monolith
Coût d’une appli avec tests
Coût d’une appli sans tests
Axiome de départ
- Q : Comment faire des applications conséquentes & plus simples à maintenir ?
- R : Ne pas faire d’application grosse & complexe.
Du monolithe…
…aux microlithes
Bounded contexts
- ➥ Qui a autorité sur…
- ➥ Les produits ? Les clients ? Les commandes ?
- ➥ On utilise un eventstore: Synapps
- ➥ Modèles enrichis localement
Plusieurs chantiers
- ➥ Bases de données
- ➥ Projet CMS
- ➥ Migration Legacy → CMS
- ➥ Projet Bridge
Projet CMS
- PHP ⇔ SQL via Pomm
- ➥ Les développeurs PHP font du SQL.
- ➥ Convertit tous les types de Pg ⇔ PHP.
- ➥ Centralise les projections des entités métier.
Projet CMS
- Que nous apporte Postgres ?
- ➥ Taxonomie, rayons (LTree) & catégories.
- ➥ Requêtes récursives (attributs, produits obsolètes etc.)
- ➥ Objets Pg, transtypage & JSONb.
- ➥ FTS (unaccent).
Migration continue
- TELT en phase avec les sprints
- ➥ Vues MySQL
- ➥ PgLoader FTW!
- ➥ Transformations Postgres (images)
- ➥ pg_tap is not an option
Projet Bridge
- Synchronisation Legacy
- ➥ API PHP
- ➥ Foreign tables MySQL & vues mat.
- ➥ Niveau de charge ≈ constant
- ➥ Recherche de changements avec des hash
Synapps
- Synchronisation d’applications
- ➥ Consommateur AMQP & API PHP.
- ➥ Timetable
- ➥ Numérotation séquentielle des événements.
- ➥ Serveur de nom du portefeuille de services.
Jour de la migration
- Intervention nocturne en WE.
- ➥ synchronisation des médias.
- ➥ synchronisation des mktplaces.
- ➥ site en lecture seule 12h avant.
Jour de la migration
- Migration de bases de données.
- ➥ Préalablement jouée avec les tests.
- ➥ Synchronisation des images.
- ➥ Fermeture du site pendant cette opération.
Jour de la migration
- Synapps…
- ➥ Démarrage des services.
- ➥ Synchronisation via Synapps (env. 120k).
- ➥ Bascule DNS.
Retours
- Le SOA, ça marche
- ➥ Actions asynchrones
- ➥ Charges serveurs décorrélées
- ➥ Facilité d’ajout de services
Merci Postgres pour…
- ➥ Les transformations de migration.
- ➥ Les types riches.
- ➥ Les foreign data wrapper.
- ➥ Les indexes GIN & GIST.
- ➥ Les extensions.
- ➥ And so much more…